<?php
/**     
*
* Copyright (c) 2009, Persistent Systems Limited
*
* Redistribution and use, with or without modification, are permitted 
*  provided that the following  conditions are met:
*   - Redistributions of source code must retain the above copyright notice, 
*     this list of conditions and the following disclaimer.
*   - Neither the name of Persistent Systems Limited nor the names of its contributors 
*     may be used to endorse or promote products derived from this software 
*     without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
 *  Class MessageBufferPolicy For GET/SET Message Buffer Policy
 */
class MessageBufferPolicy
{
    /**
     *
     * @var string $authorization
     * @access public
     */
     public $authorization  = 'Required';

    /**
     *
     * @var string $maxMessageCount
     * @access public
     */
    public $maxMessageCount  = 10;

    /**
     *
     * @var string $expiresAfter
     * @access public
     */
    public $expiresAfter  = '5'; // @todo see how this property is calculated to set into XML

    /**
     *
     * @var string $transportProtection
     * @access public
     */
    public $transportProtection = 'AllPaths';
         
    /**
     * create the policy for the message buffer    
     * @return $string atom XML policy for message buffer 
     */
    function getPolicyXml()
    {
        //create entry node for policy
        $xml = simplexml_load_string('<entry xmlns="http://www.w3.org/2005/Atom"></entry>');
        
        //add unique id
        $xml->addChild('id', 'uuid:e678f685-ba6e-4f6c-8a61-168e67b29728;id=1');
        
        //set title
        $node = $xml->addChild('title');    
        $node->addAttribute('type', 'text');    
        
        // set updated timestamp    
        $node = $xml->addChild('updated', date(DATE_ATOM));    
        $contentNode = $xml->addChild('content');    
        $contentNode->addAttribute('type', 'text/xml');    
        
        // Message Buffer Policy // TBD need modification
        $node = $contentNode->addChild('MessageBufferPolicy');
        $node->addAttribute('xmlns:i', 'http://www.w3.org/2001/XMLSchema-instance');
        $node->addAttribute('xmlns', 'http://schemas.microsoft.com/netservices/2009/05/servicebus/connect');
        
        //Message Buffer Settings
        $node->addChild('Authorization', $this->authorization);
        $node->addChild('TransportProtection', $this->transportProtection);
        $node->addChild('ExpiresAfter', 'PT' . $this->expiresAfter . 'M');
        $node->addChild('MaxMessageCount', $this->maxMessageCount);
     
        // return as XML string
        return $xml->asXML();
    }
}
?>
